#!/bin/sh







: ${VERBOSE:=0}
if [ $VERBOSE != 0 ]; then
    RMVERBARG=-v
else
    RMVERBARG=
fi

KSKBIN_DIR="/Library/Application Support/Kaspersky Lab/SafeKids/Binaries"

LAUNCHDAEMON_DIR="/Library/LaunchDaemons"
LAUNCHDAEMON_KSK_ID="com.kaspersky.safekids"
LAUNCHDAEMON_KSK_PLIST="$LAUNCHDAEMON_DIR/$LAUNCHDAEMON_KSK_ID.plist"

LAUNCHDAEMON_KSKD_ID="com.kaspersky.ksk.kskd"
LAUNCHDAEMON_KSKD_PLIST="$LAUNCHDAEMON_DIR/$LAUNCHDAEMON_KSKD_ID.plist"

if [ -f "$LAUNCHDAEMON_KSKD_PLIST" ]
then
    LAUNCHDAEMON_KSKD_EFFECTIVE_ID="$LAUNCHDAEMON_KSKD_ID"
    LAUNCHDAEMON_KSKD_EFFECTIVE_PLIST="$LAUNCHDAEMON_KSKD_PLIST"
    KSKD_REL_PATH="Kaspersky Safe Kids for Mac.app/Contents/MacOS/kskd.app/Contents/MacOS/kskd"
else
    LAUNCHDAEMON_KSKD_EFFECTIVE_ID="$LAUNCHDAEMON_KSK_ID"
    LAUNCHDAEMON_KSKD_EFFECTIVE_PLIST="$LAUNCHDAEMON_KSK_PLIST"
    KSKD_REL_PATH="SafeKids/Binaries/ksk"
fi

LAUNCHAGENT_DIR="/Library/LaunchAgents"
LAUNCHAGENT_KSK_GUI_ID="com.kaspersky.safekids.gui"
LAUNCHAGENT_KSK_GUI_PLIST="$LAUNCHAGENT_DIR/$LAUNCHAGENT_KSK_GUI_ID.plist"

LAUNCHCTL_AUTOUPDATE_DIR="/tmp"
LAUNCHCTL_AUTOUPDATE_ID="com.kaspersky.safekids.autoupdater"
LAUNCHCTL_AUTOUPDATE_PLIST="$LAUNCHCTL_AUTOUPDATE_DIR/$LAUNCHCTL_AUTOUPDATE_ID.plist"

UNSIGNED_KEXT_DIR="/System/Library/Extensions"
SIGNED_KEXT_DIR="/Library/Extensions"

UNSIGNED_KLNKE_KEXT_PATH="$UNSIGNED_KEXT_DIR"/klnke.kext
SIGNED_KLNKE_KEXT_PATH="$SIGNED_KEXT_DIR"/klnke.kext
KLNKE_BUNDLE_ID="com.kaspersky.nke"

KLNKEINTERCEPTORS_BUNDLE_ID="com.kaspersky.nke.interceptors"
KLNKEINTERCEPTORS_KEXT_PATH="$UNSINGED_KEXT_DIR"/klnkeinterceptors.kext

APP_BUNDLE="/Applications/Kaspersky Safe Kids for Mac.app"
APP_BUNDLE_OLD="/Applications/Kaspersky Safe Kids.app"

APP_SUPPORT_FOLDER="/Library/Application Support/Kaspersky Lab"
CACHES_FOLDER="/Library/Caches/com.kaspersky.safekids"

LOG_DIR="Library/Logs/Kaspersky Lab"
CRASH_FILES_DIR="Library/Logs/DiagnosticReports"

USERS_DIR="/Users"
SCRIPT_DIR=$(dirname "$0")

LIB_RECEIPTS="/Library/Receipts"
LIB_RECEIPTS_WEBAV="$LIB_RECEIPTS"/WebAV.pkg
LIB_RECEIPTS_PARCTL="$LIB_RECEIPTS"/ParCtl.pkg
LIB_RECEIPTS_CORE="$LIB_RECEIPTS"/Core.pkg

KSKSYMLINK_DIR_LEGACY="/usr/bin"
KSKSYMLINK_DIR="/usr/local/bin"

MANPAGES_DIR="/usr/share/man/man1"

FINDER_PLUGIN="/Library/Contextual Menu Items/KavFinderCMPlugIn.plugin"

AGENTAPP_BUNDLE_DIR="$APP_SUPPORT_FOLDER/SafeKids/Applications/Kaspersky Safe Kids Agent.app"
KSKAUTOUPDATEAPP_BUNDLE_DIR="$APP_SUPPORT_FOLDER/SafeKids/Applications/Kaspersky Safe Kids Update.app"
KSKAPP_BUNDLE_DIR="/Applications/Kaspersky Safe Kids for Mac.app"
LSREGISTER='/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Support/lsregister'


kill_process_tree()
{
	local pid=$1

	for i in `ps -A -o pid,ppid | awk '$2 == '${pid}' { print $1 }'`; do
		kill_process_tree "$i"
	done

 	echo "Killing pid=$pid..."
	kill -s KILL $pid
}

timedwait_pid()
{
 	local pid=$1
	local timeout=$2
	local interval=$3
	local title="${4:-${FUNCNAME[0]}}"

	local initial_timeout=$timeout
	local isalive=$pid
	while [ "$isalive" != "" ] && [ $timeout -gt 0 ]; do
		sleep $interval
		isalive=$(ps -o pid -p $pid | grep $pid)
		((timeout -= interval))
		echo "$title: Check pid=$pid isalive=$isalive, ETA to timeout=$timeout..."
	done

	if [ "$isalive" != "" ]; then
		echo "$title: Hangup detected for pid=$pid during timeout=$initial_timeout"
		kill_process_tree $pid
		wait $pid 2>/dev/null

		return $?
	fi
	echo "$title: Command executed without hangup for pid=$pid"
	wait $pid
	return $?
}

wait_ksk_start()
{

	local attempt=1
	local max_attempts=3
	local ret=0
	while [ $attempt -le $max_attempts ]; do

		( out=$(/usr/local/bin/ksk status 2>&1) && echo $out | grep "Error" ) &
		KSKSTATUSPID=$!

		timedwait_pid $KSKSTATUSPID 10 1 "${FUNCNAME[0]} [$attempt/$max_attempts]"




		ret=$?

		if [ $ret == 0 ]; then
			echo "Got error status"
		elif [ $ret == 1 ]; then

			return 0
		else
			echo "Timed out while getting daemon status"
		fi

		sleep 1
		((attempt += 1))
	done

	return $ret
}

KSKPID=$(ps -axwo pid,command | grep -v grep | grep "$KSKD_REL_PATH" | awk '{print $1}')
if [ "$KSKPID" == "" ]
then

	echo ""
	echo "Starting daemon..."
	if [ "$(launchctl list | grep $LAUNCHDAEMON_KSKD_EFFECTIVE_ID)" != "" ]
	then
		launchctl start "$LAUNCHDAEMON_KSKD_EFFECTIVE_ID"
	else
		launchctl load -w "$LAUNCHDAEMON_KSKD_EFFECTIVE_PLIST"
	fi
	wait_ksk_start
fi


echo ""
echo "Unregistering from My Kaspersky..."
KSKPID=$(ps -axwo pid,command | grep -v grep | grep "$KSKD_REL_PATH" | awk '{print $1}')
if [ "$KSKPID" != "" ]
then
	( /usr/local/bin/ksk uninstall_ucp ) &
	BYEUCPPID=$!
	timedwait_pid $BYEUCPPID 60 1
fi


echo ""
echo "Clearing storages..."
KSKPID=$(ps -axwo pid,command | grep -v grep | grep "$KSKD_REL_PATH" | awk '{print $1}')
if [ "$KSKPID" != "" ]
then
	( /usr/local/bin/ksk uninstall ) &
	DELLICENSEPID=$!
	timedwait_pid $DELLICENSEPID 60 1
fi


SYSEXT_NAME="com.kaspersky.safekids.sysext"

(systemextensionsctl list | grep $SYSEXT_NAME) > /dev/null 2>&1

if [ $? == 0 ]; then
	echo ""
	echo "Deactivating system extension..."

	KSKPID=$(ps -axwo pid,command | grep -v grep | grep "$KSKD_REL_PATH" | awk '{print $1}')



	if [ "$KSKPID" != "" ]; then
		echo "Calling ksk to deactivate the extension"
		( /usr/local/bin/ksk uninstall_sysext ) &
	else
		echo "Calling systemextensionsctl to deactivate the extension"
		( systemextensionsctl uninstall 2Y8XE5CQ94 $SYSEXT_NAME ) &
	fi

	UNINSTALLSYSEXTPID=$!
	timedwait_pid $UNINSTALLSYSEXTPID 120 1

	if [ $? == 0 ]; then
	  echo "System extension deactivated sysext process (if any) will be pkilled after daemon unload"
	else
		echo "Failed to deactivate system extension"
		sleep 2
	fi
fi


echo ""
echo "Quitting product..."
KSKPID=$(ps -axwo pid,command | grep -v grep | grep "$KSKD_REL_PATH" | awk '{print $1}')
if [ "$KSKPID" != "" ]
then
	( /usr/local/bin/ksk exit ) &
	KSKSHELLPID=$!
	timedwait_pid $KSKSHELLPID 60 1
fi


echo ""
echo "Unregistering agent bundle from launch services..."
$LSREGISTER -R -f -u "${AGENTAPP_BUNDLE_DIR}" > /dev/null 2>&1
$LSREGISTER -R -f -u "${KSKAPP_BUNDLE_DIR}" > /dev/null 2>&1
$LSREGISTER -R -f -u "${KSKAUTOUPDATEAPP_BUNDLE_DIR}" > /dev/null 2>&1


echo ""
echo "Stopping application..."
KSKPID=$(ps -axwo pid,command | grep -v grep | grep "Contents/MacOS/ksk_app" | awk '{print $1}')
if [ "$KSKPID" != "" ]
then
	kill -s KILL $KSKPID
fi


echo ""
echo "Stopping application..."
KSKPID=$(ps -axwo pid,command | grep -v grep | grep "Contents/MacOS/ksk" | awk '{print $1}')
if [ "$KSKPID" != "" ]
then
	kill -s KILL $KSKPID
fi


echo ""
echo "Stopping agent..."
KSKPID=$(ps -axwo pid,command | grep -v grep | grep "Contents/MacOS/ksk_agent" | awk '{print $1}')
if [ "$KSKPID" != "" ]
then
	kill -s KILL $KSKPID
fi


echo ""
echo "Unloading daemon from launchd..."
if [ "$(launchctl list | grep $LAUNCHDAEMON_KSKD_EFFECTIVE_ID)" != "" ]
then
	launchctl unload "$LAUNCHDAEMON_KSKD_EFFECTIVE_PLIST"
fi


pkill -TERM -x $SYSEXT_NAME


echo ""
echo "Stopping daemon..."
KSKPID=$(ps -axwo pid,command | grep -v grep | grep "$KSKD_REL_PATH" | awk '{print $1}')
if [ "$KSKPID" != "" ]
then
	kill -s TERM $KSKPID
	for ((t = 0; t < 10; t++))
	do
		PID=$(ps -axwo pid,command $KSKPID | grep -v grep | grep "$KSKD_REL_PATH" | awk '{print $1}')
		if [ "$PID" == "$KSKPID" ]
		then
			sleep 0.5
		else
			break
		fi
	done
fi

get_driver_legacy_references_path()
{
    echo "$1/Contents/.References.plist"
}

get_driver_references_path()
{
	echo "/Library/Application Support/Kaspersky Lab/Shared/$1.references"
}

get_dependent_products()
{
	if [ ! -f "$1" ]; then
		echo ""
		return 0
	fi

    echo cat '/plist/dict/key[text()="KLProducts"]/following-sibling::dict[position()=1]/key/text()' |	\
         xmllint --shell "$1" |										\
         grep -v "^/ >" |											\
         grep -v "^ \-\-\-\-\-"
}

remove_product_dependency_for_driver()
{
    local driver_path="$2"/"$1".kext
	local legacy_references_path=$(get_driver_legacy_references_path ${driver_path})
	local references_path=$(get_driver_references_path "$1")

    if [ ! -d "${driver_path}" ]; then
        echo "Path ${driver_path} does not exist"
        return 1
    fi

    if [ -f "${references_path}" ]; then
		/usr/libexec/PlistBuddy -c "Delete :KLProducts:$3" "${references_path}" &> /dev/null
    fi

	if [ -f "${legacy_references_path}" ]; then
		/usr/libexec/PlistBuddy -c "Delete :KLProducts:$3" "${legacy_references_path}" &> /dev/null
	fi
}

remove_product_dependency_for_driver "klnke" "/System/Library/Extensions" "com.kaspersky.safekids"
remove_product_dependency_for_driver "klnke" "/Library/Extensions" "com.kaspersky.safekids"

if [ -d "$UNSIGNED_KLNKE_KEXT_PATH" ]
then
	legacy_references_path=$(get_driver_legacy_references_path "$UNSIGNED_KLNKE_KEXT_PATH")
	klnke_products=$(get_dependent_products "$legacy_references_path")
	if [ "$klnke_products" == "" ]; then
		rm $RMVERBARG -rf "$UNSIGNED_KLNKE_KEXT_PATH"
	fi
fi
if [ -d "$SIGNED_KLNKE_KEXT_PATH" ]
then
	legacy_references_path=$(get_driver_legacy_references_path "$SIGNED_KLNKE_KEXT_PATH")
	klnke_legacy_products=$(get_dependent_products "$legacy_references_path")
	references_path=$(get_driver_references_path "klnke")
	klnke_products=$(get_dependent_products "$references_path")
	if [ "$klnke_products" == "" ] && [ "$klnke_legacy_products" == "" ]; then
		rm $RMVERBARG -rf "$SIGNED_KLNKE_KEXT_PATH"
		rm $RMVERBARG -rf "$references_path"
	fi
fi


echo ""
echo "Unloading klnke kernel extensions (if any)..."
if [ "$(kextstat | grep ${KLNKE_BUNDLE_ID})" != "" ] && [ ! -d "$UNSIGNED_KLNKE_KEXT_PATH" ] && [ ! -d "$SIGNED_KLNKE_KEXT_PATH" ]
then
	kextunload -b "$KLNKE_BUNDLE_ID"
fi



echo ""
echo "Unloading klnkeinterceptors kernel extensions (if any)..."
if [ "$(kextstat | grep ${KLNKEINTERCEPTORS_BUNDLE_ID})" != "" ]
then
	kextunload -b "$KLNKEINTERCEPTORS_BUNDLE_ID"
fi


if [ -d "$UNSIGNED_KLNKEINTERCEPTORS_KEXT_PATH" ]
then
	rm $RMVERBARG -rf "$UNSIGNED_KLNKEINTERCEPTORS_KEXT_PATH"
fi


if [ -f "$LAUNCHDAEMON_KSK_PLIST" ]
then
	rm $RMVERBARG "$LAUNCHDAEMON_KSK_PLIST"
fi


if [ -f "$LAUNCHDAEMON_KSKD_PLIST" ]
then
	rm $RMVERBARG "$LAUNCHDAEMON_KSKD_PLIST"
fi


if [ -f "$LAUNCHAGENT_KSK_GUI_PLIST" ]
then
	sudo -u "$USER" launchctl unload "$LAUNCHAGENT_KSK_GUI_PLIST"
	rm $RMVERBARG "$LAUNCHAGENT_KSK_GUI_PLIST"
fi


if [ -f "$LAUNCHCTL_AUTOUPDATE_PLIST" ]
then
	sudo -u "$USER" launchctl unload "$LAUNCHCTL_AUTOUPDATE_PLIST"
	rm $RMVERBARG "$LAUNCHCTL_AUTOUPDATE_PLIST"
fi


echo ""
echo "Processing \"$APP_BUNDLE\" bundle..."
if [ -d "$APP_BUNDLE" ]
then
	chflags -v nouchg "$APP_BUNDLE"
	rm $RMVERBARG -rf "$APP_BUNDLE"
fi


echo ""
echo "Processing \"$APP_BUNDLE_OLD\" bundle..."
if [ -d "$APP_BUNDLE_OLD" ]
then
	rm $RMVERBARG -rf "$APP_BUNDLE_OLD"
fi


echo ""
echo "Processing \"/$APP_SUPPORT_FOLDER\" folder..."
if [ -d "/$APP_SUPPORT_FOLDER" ]
then
	rm $RMVERBARG -rf "/$APP_SUPPORT_FOLDER/SafeKids"


	if [ -d "$APP_SUPPORT_FOLDER/Shared" ] && [ $(ls -l "$APP_SUPPORT_FOLDER/Shared" | grep -v "DS_Store" | wc -l) -eq 0 ]
	then
		rm $RMVERBARG -rf "$APP_SUPPORT_FOLDER/Shared"
	fi

	if [ -d "$APP_SUPPORT_FOLDER/UCP" ] && [ $(ls -l "$APP_SUPPORT_FOLDER" | grep "^d" | wc -l) -eq 1 ]
	then
		rm $RMVERBARG -rf "$APP_SUPPORT_FOLDER/UCP"
	fi
fi


for USERHOME in $(ls "$USERS_DIR")
do
	if [ -d "$USERS_DIR/$USERHOME/$APP_SUPPORT_FOLDER" ]
	then
		echo ""
		echo "Processing \"$USERS_DIR/$USERHOME/$APP_SUPPORT_FOLDER/SafeKids\" folder..."
		rm $RMVERBARG -rf "$USERS_DIR/$USERHOME/$APP_SUPPORT_FOLDER/SafeKids"

		if [ [ -d "$USERS_DIR/$USERHOME/$APP_SUPPORT_FOLDER/UCP" ] && [ $(ls -l "$USERS_DIR/$USERHOME/$APP_SUPPORT_FOLDER" | grep "^d" | wc -l) -eq 1 ] ] || [ $(ls -l "$USERS_DIR/$USERHOME/$APP_SUPPORT_FOLDER" | grep "^d" | wc -l) -eq 0 ]
		then
			rm $RMVERBARG -rf "$USERS_DIR/$USERHOME/$APP_SUPPORT_FOLDER"
		fi
	fi
done


echo ""
echo "Removing caches..."
if [ -d "$CACHES_FOLDER" ]
then
	rm $RMVERBARG -rf "$CACHES_FOLDER"
fi


echo
echo "Removing symbolic link..."
for CURRENT_KSKSYMLINK_DIR in "$KSKSYMLINK_DIR" "$KSKSYMLINK_DIR_LEGACY"
do
	if [ -e "$CURRENT_KSKSYMLINK_DIR"/ksk ]
	then
		rm $RMVERBARG -f "$CURRENT_KSKSYMLINK_DIR"/ksk
	fi
done

for USERHOME in $(ls "$USERS_DIR")
do
	for SCOPE in ksk ksk_agent
	do
		if [ -f "$USERS_DIR/$USERHOME/Library/Preferences/com.kaspersky.$SCOPE.plist" ]
		then
			rm $RMVERBARG -f "$USERS_DIR/$USERHOME/Library/Preferences/com.kaspersky.$SCOPE.plist"
			rm $RMVERBARG -f "$USERS_DIR/$USERHOME/Library/Preferences/com.kaspersky.$SCOPE.plist.lockfile"
		fi
	done
done


for USERHOME in $(ls "$USERS_DIR")
do
	if [ -f "$USERS_DIR/$USERHOME/Library/LaunchAgents/com.kaspersky.safekids.delayed_start.plist" ]
	then
		rm $RMVERBARG "$USERS_DIR/$USERHOME/Library/LaunchAgents/com.kaspersky.safekids.delayed_start.plist"
	fi
done


echo
echo "Removing authorization rights..."
/usr/bin/security authorizationdb remove com.kaspersky.licensing >/dev/null 2>&1
/usr/bin/security authorizationdb remove com.kaspersky.preferences >/dev/null 2>&1
/usr/bin/security authorizationdb remove com.kaspersky.parental >/dev/null 2>&1
/usr/bin/security authorizationdb remove com.kaspersky.parental.add_url_white >/dev/null 2>&1


echo
echo "Removing personal certificate"
/usr/bin/security delete-certificate -c "Kaspersky Safe Kids Certification Authority" /Library/Keychains/System.keychain 2>&1


echo
echo "Removing man pages..."
rm $RMVERBARG -f "$MANPAGES_DIR"/kav.1


echo ""
echo "Removing Finder Contextual Menu..."
if [ -d "$FINDER_PLUGIN" ]
then
	rm $RMVERBARG -rf "$FINDER_PLUGIN"
	osascript -e 'tell application "Finder"' -e 'quit' -e 'delay 2' -e 'select window of desktop' -e 'end tell'
	osascript -e 'tell application "Kaspersky Uninstaller"' -e 'activate' -e 'end tell'
fi


echo ""
echo "Removing daemon traces from \"/$LOG_DIR\"..."
if [ -d "/$LOG_DIR" ]
then
	rm $RMVERBARG -rf "/$LOG_DIR"
fi

echo ""
echo "Removing daemon traces from \"/var/log\"..."
rm $RMVERBARG -f /var/log/ksk_daemon*.log

echo ""
echo "Removing last crash timestamp from \"/var/log\"..."
rm $RMVERBARG -f /var/log/ksk_last_crash_timestamp.txt

echo ""
echo "Removing kav crash logs from \"/$CRASH_FILES_DIR\"..."
rm $RMVERBARG -f "/$CRASH_FILES_DIR"/ksk*
rm $RMVERBARG -f "/$CRASH_FILES_DIR"/{Retired,}/kskd*
rm $RMVERBARG -f "/$CRASH_FILES_DIR"/{Retired,}/com.kaspersky.safekids.sysext*
for USERHOME in $(ls "$USERS_DIR")
do
	echo ""
	echo "Removing kav crash logs from \"$USERS_DIR/$USERHOME/$CRASH_FILES_DIR\"..."
	rm $RMVERBARG -f "$USERS_DIR/$USERHOME/$CRASH_FILES_DIR"/{Retired,}/ksk_app*
	rm $RMVERBARG -f "$USERS_DIR/$USERHOME/$CRASH_FILES_DIR"/{Retired,}/ksk_agent*
done


for USERHOME in $(ls "$USERS_DIR")
do
	echo ""
	echo "Removing gui traces from \"$USERS_DIR/$USERHOME/$LOG_DIR\"..."
	rm $RMVERBARG -rf "$USERS_DIR/$USERHOME/$LOG_DIR"
done



echo ""
echo "Processing \"$LIB_RECEIPTS_CORE\" installer receipt..."
if [ -d "$LIB_RECEIPTS_CORE" ]
then
	rm $RMVERBARG -rf "$LIB_RECEIPTS_CORE"
fi

echo "Processing \"$LIB_RECEIPTS_WEBAV\" installer receipt..."
if [ -d "$LIB_RECEIPTS_WEBAV" ]
then
	rm $RMVERBARG -rf "$LIB_RECEIPTS_WEBAV"
fi

echo "Processing \"$LIB_RECEIPTS_PARCTL\" installer receipt..."
if [ -d "$LIB_RECEIPTS_PARCTL" ]
then
	rm $RMVERBARG -rf "$LIB_RECEIPTS_PARCTL"
fi

perform_shared_container_check_out() {

SHARED_CONTAINER_RELPATH="Library/Group Containers/2Y8XE5CQ94.com.kaspersky.mac"
INTERACTIVE_USERS=$(dscacheutil -q user | grep -e uid:\ 5'[0-9][0-9]' | sed 's/uid: \(.*\)/\1/')
for INTERACTIVE_USER in $INTERACTIVE_USERS; do
	echo "Performing shared container checkin for user $INTERACTIVE_USER"
	INTERACTIVE_USER_HOME=$(dscacheutil -q user| grep -A 3 -e uid:\ "$INTERACTIVE_USER" | grep -e dir:\  | sed 's/dir: \(.*\)/\1/')

	[ ! -d "$INTERACTIVE_USER_HOME/Library" ] && continue
	[ ! -d "$INTERACTIVE_USER_HOME/Library/Group Containers" ] && continue
	[ ! -d "$INTERACTIVE_USER_HOME"/"$SHARED_CONTAINER_RELPATH" ] && continue

	REGISTRY_PATH="$INTERACTIVE_USER_HOME"/"$SHARED_CONTAINER_RELPATH"/Registry.plist
	[ ! -f "$REGISTRY_PATH" ] && continue

	/usr/libexec/PlistBuddy -c "Print :AccountProtectedBySafeKids:" "$REGISTRY_PATH"
	[ $? != 0 ] && continue
	/usr/libexec/PlistBuddy -c "Set :AccountProtectedBySafeKids false" "$REGISTRY_PATH" &> /dev/null
done

return 0

}


perform_shared_container_check_out


rmdir "$APP_SUPPORT_FOLDER"

remove_icon_from_dock() {

	local dock_location=$(su `logname` -c "defaults read com.apple.dock persistent-apps | grep bundle-identifier | awk '/$1/ {print NR}'")
	dock_location=$((dock_location - 1))
	if [ $dock_location == -1 ]
    then
        echo "Icon of the product has not been kept in dock."
        return 1
    fi


	$(/usr/libexec/PlistBuddy -c "Delete persistent-apps:$dock_location" ~/Library/Preferences/com.apple.dock.plist)


	osascript -e 'tell Application "Dock"' -e 'quit' -e 'end tell'
	killall Dock
	local res=$?
	if [ "$res" -ne "0" ]
	then
	    echo "Dock process hasn't been stopped"
	    return $res
	fi
}


remove_icon_from_dock 'com.kaspersky.safekids'

if [ -f "/tmp/kldownloader-install.event" ]
then
    rm $RMVERBARG -f "/tmp/kldownloader-install.event"
fi


if [ -e "/usr/sbin/pkgutil" ]
then
	echo "Forgetting installation packages..."
	CORE_PKG_ID="com.kaspersky.safekids.core";
	WEBAV_PKG_ID="com.kaspersky.safekids.webav";
	PARCTL_PKG_ID="com.kaspersky.safekids.parctl";

	if [ "$(pkgutil --pkgs | grep $CORE_PKG_ID)" != "" ]
	then
		echo "Forgetting Virus Scan..."
		pkgutil --forget $CORE_PKG_ID
	fi

	if [ "$(pkgutil --pkgs | grep $WEBAV_PKG_ID)" != "" ]
	then
		echo "Forgetting Web Safe Kids..."
		pkgutil --forget $WEBAV_PKG_ID
	fi

	if [ "$(pkgutil --pkgs | grep $PARCTL_PKG_ID)" != "" ]
	then
		echo "Forgettings Parental Control..."
		pkgutil --forget $PARCTL_PKG_ID
	fi

fi

echo ""
echo "Kaspersky Safe Kids for Mac is successfully uninstalled from your computer."
